package CapaPersistencia;


import CapaLogica.ComunicaCliente;
import CapaDatos.Cliente;
import java.util.ArrayList;

/**
 * Clase controladora para el dominio de Cliente
 *
 */
public class ControladorCliente {

    /** atributo para el manejo de la persistencia de cliente*/
    private IDAOCliente manejadorPersistencia = new DAOClienteXML();
    private ComunicaCliente comunicameACliente = new ComunicaCliente();

    /**
     * firma para registrar un nuevo cliente en el sistema
     * @param cedula cedula del cliente
     * @param nombre nombre del cliente
     * @param apellido apellido del cliente
     * @param Fecha fecha de nacimiento del cliente
     * @return valor booleano con la condicion de exito
     */
    public boolean nuevoCliente(String cedula, String nombre, String apellido, String sexo, String nacionalidad, String edoCivil, String userName, String Password, String fecha)
         {
        boolean resultado = false;
        Cliente clienteNuevo = new Cliente();
        clienteNuevo.setCedula(cedula);
        clienteNuevo.setNombre(nombre);
        clienteNuevo.setApellido(apellido);
        clienteNuevo.setFechaNac(fecha);
        clienteNuevo.setEdoCivil(edoCivil);
        clienteNuevo.setNacionalidad(nacionalidad);
        clienteNuevo.setSexo(sexo);
        clienteNuevo.setUserName(userName);
        clienteNuevo.setPassword(Password);
        clienteNuevo.setNumReservas(0);
        String tipoCliente=comunicameACliente.enviarTipoCliente(fecha);
        clienteNuevo.setTipoCliente(tipoCliente);
        resultado = manejadorPersistencia.agregarCliente(clienteNuevo);
        return resultado;
    }

    /**
     *  firma para actualizar un cliente en el sistema
     * @param cedula cedula del cliente
     * @param nombre nombre del cliente
     * @param apellido apellido del cliente
     * @param Fecha fecha de nacimiento del cliente
     * @return valor booleano con la condicion de exito
     */
    public boolean actualizarCliente(String cedula, String nombre, String apellido, String sexo, String nacionalidad, String edoCivil, String userName, String Password, String fecha, Integer numReservas, String tipoCliente )
            {
        boolean resultado = false;
        Cliente clienteAct = new Cliente();
        clienteAct.setCedula(cedula);
        clienteAct.setNombre(nombre);
        clienteAct.setApellido(apellido);
        clienteAct.setSexo(sexo);
        clienteAct.setEdoCivil(edoCivil);
        clienteAct.setUserName(userName);
        clienteAct.setPassword(Password);
        clienteAct.setNacionalidad(nacionalidad);
        clienteAct.setFechaNac(fecha);
        clienteAct.setNumReservas(numReservas);
        clienteAct.setTipoCliente(tipoCliente);
        resultado = manejadorPersistencia.actualizarCliente(clienteAct);
        return resultado;
    }

    /**
     * firma para eliminar un cliente del sistema
     * @param cedula cedula del cliente a eliminar
     * @return valor booleano con la condicion de exito
     */
    public boolean eliminarCliente(String cedula) {
        boolean resultado = false;
        Integer cedulaEliminar = Integer.parseInt(cedula);
        resultado = manejadorPersistencia.borrarCliente(cedulaEliminar);
        return resultado;
    }

    /**
     * firma para buscar un cliente en el sistema
     * @param cedula cedula del cliente a buscar
     * @return objeto cliente con los datos
     */
    public Cliente buscarCliente(String cedula) {
        Cliente resultado = new Cliente();
        String cedulaBuscar = cedula;
        resultado = manejadorPersistencia.buscarCliente(cedulaBuscar);
        return resultado;
    }

    /**
     * Firma para obtener todos los clientes del sistema
     * @return ArrayList con todos los clientes del sistema
     */
    public ArrayList<Cliente> todosLosClientes() {
        return this.manejadorPersistencia.todosLosClientes();
    }
}
